<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Repo Cheatsheet | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/">
              <span property="name"><b>Projects</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/buildsystem/">
              <span property="name"><b>System configuration and building</b></span>
            </a>
            <meta property="position" content="3" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">Repo Cheatsheet</span>
            <meta property="position" content="4" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">















    <ul class="nav nav-sidebar">
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4/">seL4</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/l4v/">L4.verified</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes/">CAmkES</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/capdl/">CapDL</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/elfloader/">Elfloader</a>
        </li>
  
    
    

    
        <li class="active">
            <a class="" href="/projects/buildsystem/">seL4 Buildsystem</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/user_libs/">user_libs</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4runtime/">The seL4 run-time</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4webserver/">seL4webserver</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4-tutorials/">seL4 tutorials</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4bench/">sel4bench</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4test/">seL4Test</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/virtualization/">Virtualization</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes-vm/">camkes-vm</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/dockerfiles/">Dockerfiles</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/docsite/">seL4 Documentation website</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4_tools/">seL4_tools</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/microkit/">Microkit</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/hardware_hacks/">Hardware Hacks</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/rust/">Rust</a>
        </li>
  
    </ul>


</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="repo-cheatsheet">Repo Cheatsheet</h1>

<p>Repo is a tool developed by the Android Open Source Project.  We use repo for source dependency management.</p>

<p>This page describes how we typically structure our manifests and also explains some common repo commands that we use in our workflows.</p>

<p>Below is a set of example manifests for the sel4test project. They are located at <a href="https://github.com/seL4/sel4test-manifest/">https://github.com/seL4/sel4test-manifest/</a>.</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">common.xml</code>:</li>
</ul>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="c">&lt;!--
     Copyright 2018, Data61, CSIRO
     SPDX-License-Identifier: BSD-2-Clause
--&gt;</span>
<span class="nt">&lt;manifest&gt;</span>
<span class="nt">&lt;remote</span> <span class="na">name=</span><span class="s">"seL4"</span> <span class="na">fetch=</span><span class="s">"."</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;remote</span> <span class="na">fetch=</span><span class="s">"../sel4proj"</span> <span class="na">name=</span><span class="s">"sel4proj"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;remote</span> <span class="na">fetch=</span><span class="s">"https://github.com/nanopb"</span> <span class="na">name=</span><span class="s">"nanopb"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;remote</span> <span class="na">fetch=</span><span class="s">"https://github.com/riscv"</span> <span class="na">name=</span><span class="s">"opensbi"</span><span class="nt">/&gt;</span>

<span class="nt">&lt;default</span> <span class="na">revision=</span><span class="s">"master"</span> <span class="na">remote=</span><span class="s">"seL4"</span> <span class="nt">/&gt;</span>

<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4_tools.git"</span> <span class="na">path=</span><span class="s">"tools/seL4"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"cmake-tool/init-build.sh"</span> <span class="na">dest=</span><span class="s">"init-build.sh"</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"cmake-tool/griddle"</span> <span class="na">dest=</span><span class="s">"griddle"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/project&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4runtime.git"</span> <span class="na">path=</span><span class="s">"projects/sel4runtime"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"musllibc.git"</span> <span class="na">path=</span><span class="s">"projects/musllibc"</span> <span class="na">revision=</span><span class="s">"sel4"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4_libs.git"</span> <span class="na">path=</span><span class="s">"projects/seL4_libs"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"util_libs.git"</span> <span class="na">path=</span><span class="s">"projects/util_libs"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4test.git"</span> <span class="na">path=</span><span class="s">"projects/sel4test"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"easy-settings.cmake"</span> <span class="na">dest=</span><span class="s">"easy-settings.cmake"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/project&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4_projects_libs"</span> <span class="na">path=</span><span class="s">"projects/sel4_projects_libs"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"opensbi"</span> <span class="na">remote=</span><span class="s">"opensbi"</span> <span class="na">revision=</span><span class="s">"refs/tags/v0.8"</span> <span class="na">path=</span><span class="s">"tools/opensbi"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"nanopb"</span> <span class="na">path=</span><span class="s">"tools/nanopb"</span> <span class="na">revision=</span><span class="s">"refs/tags/0.4.3"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">remote=</span><span class="s">"nanopb"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/manifest&gt;</span>
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">master.xml</code>:</li>
</ul>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="c">&lt;!--
     Copyright 2018, Data61, CSIRO
     SPDX-License-Identifier: BSD-2-Clause
--&gt;</span>
<span class="nt">&lt;manifest&gt;</span>
<span class="c">&lt;!-- include all the common repositories, we just want to define the kernel --&gt;</span>
<span class="nt">&lt;include</span> <span class="na">name=</span><span class="s">"common.xml"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4.git"</span> <span class="na">path=</span><span class="s">"kernel"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/manifest&gt;</span>
</code></pre></div></div>

<h2 id="manifest-layout">Manifest layout</h2>

<p>We provide a brief overview of manifests as used in our projects in this section, please find more details in the full description of the manifest layout which can be found <a href="https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md">here</a>.</p>

<blockquote>
  <p><code class="language-plaintext highlighter-rouge">&lt;remote name="seL4" fetch="." /&gt;</code></p>
</blockquote>

<p>The <code class="language-plaintext highlighter-rouge">remote</code> element specifies a remote where git repositories can be found.</p>

<blockquote>
  <p><code class="language-plaintext highlighter-rouge">&lt;project name="musllibc.git" remote="seL4" path="projects/musllibc" revision="sel4"/&gt;</code></p>
</blockquote>

<p>The <code class="language-plaintext highlighter-rouge">project</code> element declares a repository.</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">name</code> is the repository name at the <code class="language-plaintext highlighter-rouge">remote</code></li>
  <li><code class="language-plaintext highlighter-rouge">path</code> is the repository checkout location relative to the directory the project was initialised in.</li>
  <li><code class="language-plaintext highlighter-rouge">revision</code> specifies what version of the repository to use. Branches and revision hashes are supported.  Tags are supported but the attribute value must be structured as <code class="language-plaintext highlighter-rouge">refs/tags/tagname</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">linkfile</code> element specifies a symlink from the repository to somewhere else in the project layout.
    <ul>
      <li><code class="language-plaintext highlighter-rouge">src</code> is a path relative to the repository checkout.</li>
      <li><code class="language-plaintext highlighter-rouge">dest</code> is a path relative to the project directory.</li>
    </ul>
  </li>
</ul>

<blockquote>
  <p><code class="language-plaintext highlighter-rouge">&lt;default revision="master" remote="seL4"/&gt;</code></p>
</blockquote>

<p>The <code class="language-plaintext highlighter-rouge">default</code> element specifies attribute defaults that may be ommitted from <code class="language-plaintext highlighter-rouge">project</code> elements.
If attributes are ommitted, the values from the default element will be used instead.</p>

<h3 id="pinned-manifests">Pinned manifests</h3>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="c">&lt;!--
   Copyright 2021 seL4 Project a Series of LF Projects, LLC
   SPDX-License-Identifier: BSD-2-Clause
--&gt;</span>
<span class="nt">&lt;manifest&gt;</span>
  <span class="nt">&lt;remote</span> <span class="na">name=</span><span class="s">"nanopb"</span> <span class="na">fetch=</span><span class="s">"https://github.com/nanopb"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;remote</span> <span class="na">name=</span><span class="s">"opensbi"</span> <span class="na">fetch=</span><span class="s">"https://github.com/riscv"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;remote</span> <span class="na">name=</span><span class="s">"seL4"</span> <span class="na">fetch=</span><span class="s">"."</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;remote</span> <span class="na">name=</span><span class="s">"sel4proj"</span> <span class="na">fetch=</span><span class="s">"../sel4proj"</span><span class="nt">/&gt;</span>

  <span class="nt">&lt;default</span> <span class="na">remote=</span><span class="s">"seL4"</span> <span class="na">revision=</span><span class="s">"master"</span><span class="nt">/&gt;</span>

  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"musllibc.git"</span> <span class="na">path=</span><span class="s">"projects/musllibc"</span> <span class="na">revision=</span><span class="s">"aa82031dd861f7ade4c3738b417de34120b01f15"</span> <span class="na">upstream=</span><span class="s">"sel4"</span> <span class="na">dest-branch=</span><span class="s">"sel4"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"nanopb"</span> <span class="na">path=</span><span class="s">"tools/nanopb"</span> <span class="na">remote=</span><span class="s">"nanopb"</span> <span class="na">revision=</span><span class="s">"1466e6f953835b191a7f5acf0c06c941d4cd33d9"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"refs/tags/0.4.3"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"opensbi"</span> <span class="na">path=</span><span class="s">"tools/opensbi"</span> <span class="na">remote=</span><span class="s">"opensbi"</span> <span class="na">revision=</span><span class="s">"a98258d0b537a295f517bbc8d813007336731fa9"</span> <span class="na">upstream=</span><span class="s">"refs/tags/v0.8"</span> <span class="na">dest-branch=</span><span class="s">"refs/tags/v0.8"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4.git"</span> <span class="na">path=</span><span class="s">"kernel"</span> <span class="na">revision=</span><span class="s">"a6c29549fce33df65b9018f420d330bca9086712"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4_libs.git"</span> <span class="na">path=</span><span class="s">"projects/seL4_libs"</span> <span class="na">revision=</span><span class="s">"14d3c94f5164c993033a35a5d9e23ba6dcf12f5f"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"seL4_tools.git"</span> <span class="na">path=</span><span class="s">"tools/seL4"</span> <span class="na">revision=</span><span class="s">"553086aab4c9fb9c4869060fe51a3e95c20ce454"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"cmake-tool/init-build.sh"</span> <span class="na">dest=</span><span class="s">"init-build.sh"</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"cmake-tool/griddle"</span> <span class="na">dest=</span><span class="s">"griddle"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/project&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4_projects_libs"</span> <span class="na">path=</span><span class="s">"projects/sel4_projects_libs"</span> <span class="na">revision=</span><span class="s">"a6fbc13c792ef518e5bcf1da69c8d27b6cd19814"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4runtime.git"</span> <span class="na">path=</span><span class="s">"projects/sel4runtime"</span> <span class="na">revision=</span><span class="s">"c27050513503f615137950cb3918f6f040f34407"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"sel4test.git"</span> <span class="na">path=</span><span class="s">"projects/sel4test"</span> <span class="na">revision=</span><span class="s">"110ad99b32cb94f0604ce9fef796164b595fe6aa"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;linkfile</span> <span class="na">src=</span><span class="s">"easy-settings.cmake"</span> <span class="na">dest=</span><span class="s">"easy-settings.cmake"</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/project&gt;</span>
  <span class="nt">&lt;project</span> <span class="na">name=</span><span class="s">"util_libs.git"</span> <span class="na">path=</span><span class="s">"projects/util_libs"</span> <span class="na">revision=</span><span class="s">"280f7bb58290ea3d719d86894655a03f36d347e2"</span> <span class="na">upstream=</span><span class="s">"master"</span> <span class="na">dest-branch=</span><span class="s">"master"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/manifest&gt;</span>
</code></pre></div></div>

<p>A pinned manifest uses pinned git revisions for all of its repositories. It is good practice to create a pinned manifest that refers to a working version of a project. For projects that we maintain, we provide at least two manifests: default.xml and master.xml (See <a href="/ReleaseProcess">ReleaseProcess</a> for more information about what manifests we make available).</p>

<h2 id="commands">Commands</h2>

<h3 id="init-and-sync"><code class="language-plaintext highlighter-rouge">init</code> and <code class="language-plaintext highlighter-rouge">sync</code></h3>

<p><code class="language-plaintext highlighter-rouge">repo init</code> and <code class="language-plaintext highlighter-rouge">repo sync</code> are the most commonly used commands. Their purpose is for selecting a manifest and downloading all of the repositories and setting up a project directory structure.  Often project READMEs will provide the following instructions:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir source_dir
cd source_dir
repo init -u https://github.com/seL4/sel4test-manifest.git
repo sync
</code></pre></div></div>

<p>This will initialise a new directory with the git repos checked out in the locations described by the manifest file.</p>

<p>init is for selecting a manifest to use, and sync is for checking out that manifest.</p>

<p><code class="language-plaintext highlighter-rouge">init</code></p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">-u</code> git url. Note: GitHub <code class="language-plaintext highlighter-rouge">ssh</code> urls do not work using the generated URL they provide: <code class="language-plaintext highlighter-rouge">git@github.com:seL4/sel4test-manifest.git</code> has to be changed to <code class="language-plaintext highlighter-rouge">ssh://git@github.com/seL4/sel4test-manifest.git</code></li>
  <li><code class="language-plaintext highlighter-rouge">-m</code> manifest name, default is default.xml.</li>
  <li><code class="language-plaintext highlighter-rouge">-b</code> branch or revision, or tag if using format <code class="language-plaintext highlighter-rouge">refs/tags/tagname</code>. Default is default.xml</li>
</ul>

<p><code class="language-plaintext highlighter-rouge">sync</code></p>

<p>This command synchronises your project directory with what the manifest describes.  If you have made commits in your branches, this may result in them getting <em>lost</em> as repo switches the HEAD back to what the manifest describes. If this happens, use <code class="language-plaintext highlighter-rouge">git reflog</code> to find the untracked commit, or use branches to keep track of commits as branches will remain in your local checkouts.</p>

<p><code class="language-plaintext highlighter-rouge">sync</code> has several flags for specifying how to checkout from remotes such as <code class="language-plaintext highlighter-rouge">-j</code> for parallel checkouts.  Use <code class="language-plaintext highlighter-rouge">repo sync --help</code> for a list and description.</p>

<h3 id="diff-and-status"><code class="language-plaintext highlighter-rouge">diff</code> and <code class="language-plaintext highlighter-rouge">status</code></h3>

<p>These two commands are similar to running git diff or git status in every git repository.</p>

<h3 id="diffmanifests"><code class="language-plaintext highlighter-rouge">diffmanifests</code></h3>

<p>This command allows you to list the commit differences between two manifests of the same project.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>changed projects :

        kernel changed from master to 757c3ac98246afd0593367f1fa19054316a77495
                [-] 62445b35 x86: Correct labels for port out operations
                [-] d9780ec7 manual: label object groups in parse_doxygen_xml.py
                [-] 63c5ac6d manual: use level 3 for syscalls
                [-] deba85b2 manual: promote sel4_arch API docs level
                [-] b5ee12f0 manual: group generated API methods by object type
                [-] da1e73fe manual: use int level in parse_doxygen_xml.py
                [-] c2212688 x86: IOPort invocation has proper structure
                [-] 7b8f6106 x86: Consistently compare against PPTR_USER_TOP
                [-] 1b0a7181 manual: s/Polling Send/Non-Blocking Send
                [-] 84b065b0 manual: use fontenc package

        projects/tools changed from master to 930b6467eae8404e4a72555b693120ac0d64fc48
                [-] 121782a CMake add error condition

</code></pre></div></div>
<!--
## Repo mirroring

TODO: Add details about repo mirroring
 -->
<h2 id="faq">FAQ</h2>

<h3 id="how-do-i-check-out-a-released-version-of-a-project-such-as-sel4test">How do I check out a released version of a project such as seL4test?</h3>

<blockquote>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>repo init -u https://github.com/seL4/sel4test-manifest.git -b refs/tags/
repo sync
</code></pre></div>  </div>
</blockquote>

<h3 id="how-do-i-change-manifests-of-an-already-checked-out-project">How do I change manifests of an already checked out project?</h3>

<blockquote>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>repo init -m master.xml
repo sync
</code></pre></div>  </div>
</blockquote>

<p>This will change from the current manifest to <code class="language-plaintext highlighter-rouge">master.xml</code> in the manifest repository</p>

<h3 id="how-do-i-create-a-pinned-manifest">How do I create a pinned manifest?</h3>

<blockquote>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>repo manifest -r -o pinned.xml
</code></pre></div>  </div>
</blockquote>

<h3 id="is-there-a-faster-way-to-checkout-and-sync-a-project">Is there a faster way to checkout and sync a project?</h3>
<blockquote>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>repo init -u https://github.com/seL4/sel4test-manifest.git --no-clone-bundle --depth=1
repo sync --jobs=8 --fetch-submodules --current-branch --no-clone-bundle
</code></pre></div>  </div>
</blockquote>

  </div>







  
    
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
    <ul id="toc" class="section-nav">
<li class="toc-entry toc-h2"><a href="#manifest-layout">Manifest layout</a>
<ul>
<li class="toc-entry toc-h3"><a href="#pinned-manifests">Pinned manifests</a></li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#commands">Commands</a>
<ul>
<li class="toc-entry toc-h3"><a href="#init-and-sync">init and sync</a></li>
<li class="toc-entry toc-h3"><a href="#diff-and-status">diff and status</a></li>
<li class="toc-entry toc-h3"><a href="#diffmanifests">diffmanifests</a></li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#faq">FAQ</a>
<ul>
<li class="toc-entry toc-h3"><a href="#how-do-i-check-out-a-released-version-of-a-project-such-as-sel4test">How do I check out a released version of a project such as seL4test?</a></li>
<li class="toc-entry toc-h3"><a href="#how-do-i-change-manifests-of-an-already-checked-out-project">How do I change manifests of an already checked out project?</a></li>
<li class="toc-entry toc-h3"><a href="#how-do-i-create-a-pinned-manifest">How do I create a pinned manifest?</a></li>
<li class="toc-entry toc-h3"><a href="#is-there-a-faster-way-to-checkout-and-sync-a-project">Is there a faster way to checkout and sync a project?</a></li>
</ul>
</li>
</ul>
</div>

  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> seL4 Buildsystem </h2> 
        <li>
          
          <a style="" class="" href="/projects/buildsystem/">
            Documentation homepage
          </a>
        </li>

















    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/sel4/sel4">
            sel4
          </a>
        </li>

    
        <li>
          <a class="" href="https://github.com/sel4/sel4_tools">
            sel4_tools
          </a>
        </li>









  







    
        <h3>Recent Updates</h3>
    
        <li>
          <a style="" href="/updates/buildsystem/11.0.x.html">
            seL4 11.0.x-compatible
          </a>
        </li>

    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Thu Nov 11 11:50:06 2021 +1100 0469eefc77
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/projects/buildsystem/repo-cheatsheet.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/projects/buildsystem/repo-cheatsheet.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
